package com.spring.framework.aop.aspect;

import java.lang.reflect.Method;


public class MainAop {
	public static void main(String[] args) {
		// 切点表达式
		String pointCutExpression = "execution(* com.xushu.spring.examples.aop.*.*(..))";

		AspectJExpressionPointcut expressionPointcut = new AspectJExpressionPointcut(pointCutExpression);

		// 需要检查的类
		Class<?> checkClass = TulingCalculate.class;

		// 如果表达式未明确到类， 粗筛会通过
		if (expressionPointcut.rougthMatches(checkClass)) {
			System.out.println("粗筛通过");
			for (Method method : checkClass.getMethods()) {

				if (expressionPointcut.accurateMatches(method)) {
					System.out.println("精筛通过");
					return;
				}
			}

			System.out.println("精筛未通过");
		} else {

			System.out.println("粗筛未通过");
		}
	}
}
